<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="generator" content="pandoc" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  <title>Release Notes for STM32G0xx HAL Drivers Package</title>
  <style type="text/css">
      code{white-space: pre-wrap;}
      span.smallcaps{font-variant: small-caps;}
      span.underline{text-decoration: underline;}
      div.column{display: inline-block; vertical-align: top; width: 50%;}
  </style>
  <link rel="stylesheet" href="_htmresc/mini-st.css" />
  <!--[if lt IE 9]>
    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
  <![endif]-->
</head>
<body>
<div class="row">
<div class="col-sm-12 col-lg-4">
<div class="card fluid">
<div class="sectione dark">
<center>
<h1 id="release-notes-forstm32g0xx-hal-drivers"><small>Release Notes for</small><mark>STM32G0xx HAL Drivers</mark></h1>
<p>Copyright © 2018 STMicroelectronics</p>
<a href="https://www.st.com" class="logo"><img src="_htmresc/st_logo.png" alt="ST logo" /></a>
</center>
</div>
</div>
<h1 id="license">License</h1>
<p>This software component is licensed by ST under BSD 3-Clause license, the “License”; You may not use this component except in compliance with the License. You may obtain a copy of the License at:</p>
<p><a href="https://opensource.org/licenses/BSD-3-Clause">https://opensource.org/licenses/BSD-3-Clause</a></p>
<h1 id="purpose">Purpose</h1>
<p>The STM32Cube HAL and LL, an STM32 abstraction layer embedded software, ensure maximized portability across STM32 portfolio.</p>
<p>The Portable APIs layer provides a generic, multi instanced and simple set of APIs to interact with the upper layer (application, libraries and stacks). It is composed of native and extended APIs set. It is directly built around a generic architecture and allows the build-upon layers, like the middleware layer, to implement its functions without knowing in-depth the used STM32 device. This improves the library code re-usability and guarantees an easy portability on other devices and STM32 families.</p>
<p>The Low Layer (LL) drivers are part of the STM32Cube firmware HAL that provide basic set of optimized and one shot services. The Low layer drivers, contrary to the HAL ones are not Fully Portable across the STM32 families; the availability of some functions depend on the physical availability of the relative features on the product. The Low Layer (LL) drivers are designed to offer the following features:</p>
<ul>
<li>New set of inline function for direct and atomic register access</li>
<li>One-shot operations that can be used by the HAL drivers or from application level.</li>
<li>Fully Independent from HAL and can be used in standalone usage (without HAL drivers)</li>
<li>Full features coverage of the all the supported peripherals.</li>
</ul>
</div>
<div class="col-sm-12 col-lg-8">
<h1 id="update-history">Update History</h1>
<div class="collapse">
<input type="checkbox" id="collapse-section4" checked aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.3.0 / 25-June-2019</label>
<div>
<h2 id="main-changes">Main Changes</h2>
<h3 id="maintenance-release">Maintenance release</h3>
<p>Maintenance release of HAL and Low layers drivers supporting STM32G041xx/STM32G031xx/STM32G030xx and STM32G081xx/STM32G071xx/STM32G070xx devices.</p>
<table>
<caption>Fixed bugs list</caption>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">[FLASH HAL] Add Missing clear of End Of Operation flag in HAL FLASH_WaitForLastOperation() function</td>
</tr>
<tr class="even">
<td style="text-align: left;">[GPIO HAL] Correct issue on EXTI management in HAL_GPIO_DeInit()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[IWDG] Update comments ti improve document generation</td>
</tr>
<tr class="even">
<td style="text-align: left;">[RNG HAL] Correct wrong bits used for Seed and Clock errors detection (CEI and SEI)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RNG] Add new definition for RNG error type : HAL_RNG_ERROR_BUSY, HAL_RNG_ERROR_SEED, HAL_RNG_ERROR_CLOCK</td>
</tr>
<tr class="even">
<td style="text-align: left;">[RNG] Update comments area to reflect Data Ready status behavior</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SYSCFG LL] Correct wrong bit definition used for LL_SYSCFG_UCPD2_STROBE</td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM HAL] Master Slave Mode (MSM) configurable: add <span class="citation" data-cites="note">@note</span> in TIM_MasterConfigTypeDef</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM HAL] Configure fast mode for One pulse mode: add new __HAL_TIM_DISABLE_OCxFAST() &amp; __HAL_TIM_ENABLE_OCxFAST() macros</td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM HAL] Configure IT for break and dead-time API: add <span class="citation" data-cites="note">@note</span> HAL_TIMEx_ConfigBreakDeadTime()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM HAL] Remove useless uint16_t cast when clearing bit</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART/UART/IRDA/SMARTCARD HAL] Correction to avoid using macros with function calls as argument in PPP_SetConfig()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[USART/UART/IRDA/SMARTCARD HAL] Fix minor doxygen issues to improve CHM document generation</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART/UART/IRDA HAL] Improve API description in HAL_PPP_Transmit/Receive() and HAL_PPP_Transmit/Receive()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[IRDA/SMARTCARD HAL] In PPP_HandleTypeDef, ErrorCode field is now declared in volatile (__IO added)</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART LL] Update Macros __LL_USART_DIV_SAMPLING8() and __LL_USART_DIV_SAMPLING16 to use uint32_t</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[USART LL] Change USART_PRESCALER_TAB[] table definition from uint16_t to uint32_t</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART LL] [MISRAC2012-Rule-18.1_b/d] array out of bounds in LL_USART_SetBaudRate()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SMARTCARD HAL] [MISRAC2012-Rule-13.5] The right-hand operand of a logical &amp;&amp; or || operator shall not contain side effects</td>
</tr>
</tbody>
</table>
<p><br />
</p>
<h2 id="development-toolchains-and-compilers">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25</li>
<li>System Workbench STM32 (SW4STM32) toolchain V2.7.2</li>
</ul>
<h2 id="supported-devices-and-boards">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32G081xx, STM32G071xx, STM32G070xx</li>
<li>STM32G041xx, STM32G031xx, STM32G030xx</li>
</ul>
<h2 id="backward-compatibility">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
<h2 id="dependencies">Dependencies</h2>
<p>This software release is compatible with:</p>
<p>STM32CubeMX V5.3.0</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.2.0 / 05-April-2019</label>
<div>
<h2 id="main-changes-1">Main Changes</h2>
<h3 id="maintenance-release-and-product-update">Maintenance release and product update</h3>
<p>First release of HAL and Low layers drivers to introduce support of <strong>STM32G041xx/STM32G031xx/STM32G030xx devices</strong>.</p>
<p>Maintenance release of HAL and Low layers drivers supporting STM32G081xx/STM32G071xx/STM32G070xx devices.</p>
<table>
<caption>Additional features<br />
</caption>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">HAL, LL Drivers update to support STM32G041xx, STM32G031xx, STM32G030xx</td>
</tr>
</tbody>
</table>
<table>
<caption>Fixed bugs list</caption>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">[HAL] Correct possible issue within HAL_SetTickFreq()function</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RCC] Use variable uwTickPrio instead TICK_INT_PRIORITY to not overwrite Tick priority</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL RCC] Use LL macro __LL_RCC_CALC_PCLK1_FREQ() in HAL_RCC_GetPCLK1Freq() to solve misra c 2012 issues</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL ADC] LL function LL_ADC_SetCommonFrequencyMode() is useless in STM32G0, kept for legacy purpose.</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL DAC] Rename HAL_DAC_MSP_INIT_CB_ID/HAL_DAC_MSP_DEINIT_CB_ID in HAL_DAC_MSPINIT_CB_ID/HAL_DAC_MSPDEINIT_CB_ID</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL DAC] Internal function DAC_DMAConvCpltCh1(), DAC_DMAErrorCh1(), DAC_DMAHalfConvCpltCh1() moved to hal_dac_ex.c</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL DAC] Use DAC driver define instead of CMSIS bit to check if software trigger enabled in HAL_DAC_Start()</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL FLASH] HAL flash driver improvement : typo, comments correction, add U suffix, used CMSIS define instead of hard coded value, use HAL macro instead of direct register access</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL FLASH] Clear FLASH_IT_ECCC flag when disabling End of Operation and Error interrupts in HAL_FLASH_IRQHandler()</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL GPIO] Correct compilation warning with new IAR 8.30.1 in IS_GPIO_PIN() macro</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL GPIO] Enhance re-entrance robustness for HAL_GPIO_TogglePin() API</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL PWR] Correct definition of LL_PWR_MODE_STOP0 and LL_PWR_MODE_STOP1</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL PWR] Correct definition of registers address-based accesses, which MUST be volatile</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RTC] Add management of INITF flag rising occurrence too early when entering init mode</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL RTC] Correct WUTWF flag management in HAL_RTCEx_SetWakeUpTimer() API</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RTC] Rename RTC_IT_MASK into RTC_FLAG_MASK</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL RTC] Replace hard coded values by CMSIS _Pos definition</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL TIM] Align DMA Burst defines with the reference manual: Add TIM_DMABASE_TISEL definition</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL TIM] Remove parenthesis on REG parameter in LL_LPTIM_WriteReg() and LL_LPTIM_ReadReg() to avoid compilation failure after MISRA correction</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL DMA] Add clean of Callbacks in HAL_DMA_DeInit() and remove it from HAL_DMA_Init()</td>
</tr>
</tbody>
</table>
<p><br />
</p>
<h2 id="development-toolchains-and-compilers-1">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25</li>
<li>System Workbench STM32 (SW4STM32) toolchain V2.7.2</li>
</ul>
<h2 id="supported-devices-and-boards-1">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32G081xx, STM32G071xx, STM32G070xx</li>
<li><strong>STM32G041xx, STM32G031xx, STM32G030xx</strong></li>
</ul>
<h2 id="backward-compatibility-1">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
<h2 id="dependencies-1">Dependencies</h2>
<p>This software release is compatible with:</p>
<p>STM32CubeMX V5.2.0</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 06-February-2019</label>
<div>
<h2 id="main-changes-2">Main Changes</h2>
<h3 id="maintenance-release-and-product-update-1">Maintenance release and product update</h3>
<p>Maintenance release of HAL and Low layers drivers to support STM32G071xx/STM32G081xx/STM32G070xx devices.</p>
<table>
<caption>Additional features<br />
</caption>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">MISRAC2012 implementation in CEC/CRYP/WWDG/RNG/I2S/SPI/UTILS/IWDG/USART/UART/I2C</td>
</tr>
</tbody>
</table>
<table>
<caption>Fixed bugs list</caption>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">[LL ADC] compilation warning in stm32g0xx_ll_adc.h with MDK-ARM</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL ADC] Wrong commentary in stm32g0xx_ll_adc.h</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL ADC] missing to fill ADC_CFGR2_CKMODE in LL_ADC_Init ()</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL ADC] redefinition of registers address MUST be volatile (_IO)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL ADC] Potential infinite wait in while loop of LL_ADC_DeInit()</td>
</tr>
<tr class="even">
<td style="text-align: left;">[ADC] Embedded SW code comments or document must use ‘’Peripheral’’ rather than ‘’IP’’</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL COMP] redefinition of registers address MUST be volatile (_IO)</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL CYRP] Support several call to decrypt API without initialize Key and IVR - <strong>API update</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL CRYP] Add possibility to not set key in HAL CRYP interface</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL DMA] IS_LL_DMA_PERIPHREQUEST macro is not aligned with the max number of request</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[FLASH][MISRAC2012-Rule-8.5_b] Multiple declarations of externally-linked object</td>
</tr>
<tr class="even">
<td style="text-align: left;">[FLASH]Program DoubleWord fails (PGAERR) when using STRD assembly instruction</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[I2C][MISRAC2012] MISRAC2012-Rule-2.2c and 17.8 when ITFlags is modified</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL I2C] Issue using HAL_I2C_Slave_Sequential_Receive_DMA, STOPF arrives too early versus DMA cplt message</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL RCC] Correct EXTERNAL_CLOCK_VALUE</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RCC][CodeSonar] HAL_RCCEx_GetPeriphCLKFreq - Useless Assignment</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL RCC] MCU hangs after some stop/wakeup cycles</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RCC] __HAL_RCC_PLLxx_CONFIG() macros shall preserve output clock(s) enable state</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL UART][CodeSonar] Cast alter value (LL_LPUART_ReceiveData8)</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL UART][CodeSonar] Uninitialized Variable (LL_LPUART_GetBaudRate)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL USART][CodeSonar] Cast alter value (LL_USART_ReceiveData8)</td>
</tr>
</tbody>
</table>
<p><br />
</p>
<h2 id="supported-devices-and-boards-2">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32G0<strong>81</strong>xx</li>
<li>STM32G0<strong>71</strong>xx</li>
<li>STM32G0<strong>70</strong>xx</li>
</ul>
<h2 id="backward-compatibility-2">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
<h2 id="dependencies-2">Dependencies</h2>
<p>This software release is compatible with:</p>
<p>STM32CubeMX V5.1.0</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 26-October-2018</label>
<div>
<h2 id="main-changes-3">Main Changes</h2>
<h3 id="first-release">First release</h3>
<p>First official release of HAL and Low layers drivers to support STM32G071xx/STM32G081xx/STM32G070xx</p>
<h2 id="supported-devices-and-boards-3">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32G0<strong>81</strong>xx</li>
<li>STM32G0<strong>71</strong>xx</li>
<li>STM32G0<strong>70</strong>xx</li>
</ul>
<h2 id="dependencies-3">Dependencies</h2>
<p>This software release is compatible with:</p>
<p>STM32CubeMX V5.0.0</p>
</div>
</div>
</div>
</div>
<footer class="sticky">
<p>For complete documentation on <strong>STM32 Microcontrollers</strong>, visit: <a href="http://www.st.com/STM32">http://www.st.com/STM32</a></p>
<p>This release note uses up to date web standards and, for this reason, should not be opened with Internet Explorer but preferably with popular browsers such as Google Chrome, Mozilla Firefox, Opera or Microsoft Edge.</p>
</footer>
</body>
</html>
